#include "process.h"
#include <string.h>
#include <unistd.h>

#define SIZE 101
#define STYLE '#'

// v: 展示进度条基础功能
void process()
{
    int rate = 0;

    char buffer[SIZE];
    memset(buffer, 0, sizeof(buffer));

    const char* lable = "|/-\\";
    int len = strlen(lable);

    while(rate <= 100)
    {
        printf("[%-100s][%d%%][%c]\r", buffer, rate, lable[rate % len ]);
        fflush(stdout);
        buffer[rate] = STYLE;
        rate++;

        usleep(500000);
    }

    printf("\n");
}

// 根据进度,动态刷新一次进度条
void FlushProcess(char* tips, double total, double current)
{
    char buffer[SIZE];
    memset(buffer, 0, sizeof(buffer));

    double rate = current * 100.0 / total;
    int num = (int)rate;

    for(int i = 0; i < num; i++)
    {
        buffer[i] = STYLE;
    }
    
    const char* lable = "|/-\\";
    int len = strlen(lable);
    static int index = 0;
    
    printf("%s...[%-100s][%.2lf%%][%c]\r", tips, buffer, rate, lable[index++]);
    fflush(stdout);
    index %= len;

    if(num >= 100) printf("\n");



}

